Data storage systems are arrangements of hardware and software that include one or more storage processors coupled to arrays of non-volatile storage devices, such as magnetic disk drives, electronic flash drives, and/or optical drives, for example. The storage processors service storage requests, arriving from host machines (“hosts”), which specify files or other data elements to be written, read, created, or deleted, for example. Software running on the storage processors manages incoming storage requests and performs various data processing tasks to organize and secure the data elements stored on the non-volatile storage devices.
A storage processor running in a data storage system may operate an IO (Input/Output) stack that maintains storage structures used for processing storage requests from hosts. The storage structures are arranged in layers, where each layer represents an internal data storage object, such as a RAID (Redundant Array of Independent Disks) group, an internal LUN (Logical Unit), an internal file system, a storage pool, and so forth. As storage requests arrive from hosts, e.g., requesting read and/or write operations of host-accessible data objects, the storage processor responds to the storage requests by directing them to the IO stack, where they propagate from layer to layer, inducing operations on the storage structures they encounter. The IO stack may then process the storage requests to completion, e.g., by effecting read, write, and/or other operations requested, and by providing the requesting host with data and/or an acknowledgement, for example.